package br.com.bestOffer.placaDeVideo.bean;

import java.util.Arrays;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.bestOffer.ejb.fabricante.entity.Fabricante;
import br.com.bestOffer.ejb.fabricante.service.FabricanteServiceBean;
import br.com.bestOffer.ejb.placaDeVideo.entity.PlacaDeVideo;
import br.com.bestOffer.ejb.placaDeVideo.service.PlacaDeVideoServiceBean;
import br.com.bestOffer.enumerator.ArquiteturaPlacaDeVideo;
import br.com.bestOffer.enumerator.VersaoMemoriaPlacaDeVideo;
import br.com.bestOffer.exceptions.BestOfferListaVaziaException;
import br.com.bestOffer.util.BaseManagedBean;
import br.com.bestOffer.util.BestOfferConstantes;
import br.com.bestOffer.util.Constantes;
import br.com.bestOffer.util.WebResources;

@ManagedBean
@ViewScoped
public class PesquisaAvancadaPlacaVideoManagedBean extends BaseManagedBean{

	private static final long serialVersionUID = -289064922090465907L;
	
	@EJB
	private FabricanteServiceBean fabricanteServiceBean;
	
	@EJB
	private PlacaDeVideoServiceBean placaVideoServiceBean;
	
	private List<Fabricante> listaFabricantes;
	
	private List<PlacaDeVideo> listaPlacaVideo;
	
	private String idFabricante;
	private String modelo;
	private Integer barramento;
	private VersaoMemoriaPlacaDeVideo versaoMemoriaPlacaVideo;
	private ArquiteturaPlacaDeVideo arquiteturaPlacaDeVideo;
	
	@PostConstruct
	public void init() throws BestOfferListaVaziaException{
		listaFabricantes = fabricanteServiceBean.listarTodosFabricantes();
		listaPlacaVideo = placaVideoServiceBean.listarPlacasDeVideo();
	}
	
	public void pesquisarPlacaVideo(){
		listaPlacaVideo = placaVideoServiceBean.pesquisarPlacaVideo(idFabricante, versaoMemoriaPlacaVideo, modelo, arquiteturaPlacaDeVideo,barramento);
		
		if(listaPlacaVideo.isEmpty()){
			addMessageInfo("Nenhum resultado encontrado!");
		}
	}
	
	public String verAnuncios(PlacaDeVideo placa){
		WebResources.getFlashContext().put(Constantes.PRODUTO, placa);
		return BestOfferConstantes.ANUNCIOS_PLACA_VIDEO;
	}
	
	public List<ArquiteturaPlacaDeVideo> getListaArquiteturaPlacaVideo() {
		return Arrays.asList(ArquiteturaPlacaDeVideo.values());
	}
	
	public List<VersaoMemoriaPlacaDeVideo> getListaVersaoMemoriaVideo() {
		return Arrays.asList(VersaoMemoriaPlacaDeVideo.values());
	}

	public List<Fabricante> getListaFabricantes() {
		return listaFabricantes;
	}

	public void setListaFabricantes(List<Fabricante> listaFabricantes) {
		this.listaFabricantes = listaFabricantes;
	}

	public List<PlacaDeVideo> getListaPlacaVideo() {
		return listaPlacaVideo;
	}

	public void setListaPlacaVideo(List<PlacaDeVideo> listaPlacaVideo) {
		this.listaPlacaVideo = listaPlacaVideo;
	}

	public String getIdFabricante() {
		return idFabricante;
	}

	public void setIdFabricante(String idFabricante) {
		this.idFabricante = idFabricante;
	}

	public String getModelo() {
		return modelo;
	}

	public void setModelo(String modelo) {
		this.modelo = modelo;
	}

	public VersaoMemoriaPlacaDeVideo getVersaoMemoriaPlacaVideo() {
		return versaoMemoriaPlacaVideo;
	}

	public void setVersaoMemoriaPlacaVideo(
			VersaoMemoriaPlacaDeVideo versaoMemoriaPlacaVideo) {
		this.versaoMemoriaPlacaVideo = versaoMemoriaPlacaVideo;
	}

	public ArquiteturaPlacaDeVideo getArquiteturaPlacaDeVideo() {
		return arquiteturaPlacaDeVideo;
	}

	public void setArquiteturaPlacaDeVideo(
			ArquiteturaPlacaDeVideo arquiteturaPlacaDeVideo) {
		this.arquiteturaPlacaDeVideo = arquiteturaPlacaDeVideo;
	}

	public Integer getBarramento() {
		return barramento;
	}

	public void setBarramento(Integer barramento) {
		this.barramento = barramento;
	}

	
}
